/*
 * @Author      : ZhouQiJun
 * @Date        : 2024-02-18 17:55:04
 * @LastEditors : ZhouQiJun
 * @LastEditTime: 2025-08-09 19:02:51
 * @Description :
 */
import { type GisKey, type GisRef } from '../define'

const store: Record<GisKey, GisRef> = {}
const cache: Record<PropertyKey, unknown> = {}

/**
 * @param key
 */
export function getGis(key: GisKey): GisRef {
  // console.log(store, store[key], key, '-> zqj log store')
  return store[key]
}

/**
 * 存放gis引用。
 * @param key 唯一key
 * @param gis gis引用
 */
export function setGis(key: GisKey, gis: GisRef) {
  // console.log(key, gis, 'zzp-setGis')
  return (store[key] = gis)
}

/**
 * 删除gis引用，仅从映射中删除，不会释放里面的资源。
 * @param key
 */
export function delGis(key: GisKey) {
  delete store[key]
}

/**
 * 获取缓存对象（或者其他什么东西），缓存是针对各平台通用的，或者某平台通用的（比如wkt parser）。
 *
 * @param name 缓存名称
 */
export function getCache<T>(name: PropertyKey): T {
  return cache[name] as T
}

/**
 * 设置缓存对象（或者其他什么东西）。
 * @param name 缓存名称
 * @param value 缓存值
 */
export function setCache<T>(name: PropertyKey, value: T): T {
  return (cache[name] = value)
}

/**
 * 清除所有缓存信息。
 */
export function clearCache() {
  Object.keys(cache).forEach((name) => delete cache[name])
}
